<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
/*  作用域分类 */
 // 1.全局作用域 
// 1个.html文件打开 或者 一个.js文件 就是一个全局作用域
// 全局的这个 称作 window  比如window.alert(666);




 //2.局部作用域 
// 只有函数才有局部作用域  
// if  else if  for  while switch do while 不叫局部作用域  

//  作用域提供了三个机制  


// 变量的定义  
// 在哪个作用域下 就是哪个作用域的私有变量 
// 这个变量只能自己用或者 后代用  父级别不能用 


// 变量的赋值  
// 自己作用域有 先给自己的 
// 自己作用域没有 往上找父级 父级有直接赋值停止查找 
// 父级没有 继续向上  
// 最终到window 全局作用域 还是没有  
// 那么 这个变量会被当做全局变量 进行赋值  

// 变量的访问 

// 自己作用域有访问自己的 
// 自己作用域没有 向上找父亲的  如果有停止 然后 访问 
// 如果父级没有继续向上  直到找到为止 
// 如果最后找到window 还是没有  
// 那么就会返回 变量 is not defined  




// 变量的三种行为  

// 变量定义的时候 我们需要加上var 关键字 
// 函数的名字也是标识符的一种  
// 函数的形参  


// 变量的访问  

//  console.log(变量名)


// 变量的赋值  
// = += -= *= /+ %= **=
// 形参和实参的交互也是一种赋值  


    // var test = 100;
    function fn(){
        // var test = 200;
        console.log(test); // 200 
        function fn1(){
            // var test = 300;
            console.log(test); //300 => 200 
        }
        fn1();
    }
    console.log(test); // 100  
    fn();
    fn1()
    </script>
</body>
</html>